↳ Prolog
↳ PrologToPiTRSProof
inorder_in(tree(L, V, R), I) → U1(L, V, R, I, inorder_in(L, LI))
inorder_in(nil, []) → inorder_out(nil, [])
U1(L, V, R, I, inorder_out(L, LI)) → U2(L, V, R, I, LI, inorder_in(R, RI))
U2(L, V, R, I, LI, inorder_out(R, RI)) → U3(L, V, R, I, append_in(LI, .(V, RI), I))
append_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, append_in(Xs, Ys, Zs))
append_in([], X, X) → append_out([], X, X)
U4(X, Xs, Ys, Zs, append_out(Xs, Ys, Zs)) → append_out(.(X, Xs), Ys, .(X, Zs))
U3(L, V, R, I, append_out(LI, .(V, RI), I)) → inorder_out(tree(L, V, R), I)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
inorder_in(tree(L, V, R), I) → U1(L, V, R, I, inorder_in(L, LI))
inorder_in(nil, []) → inorder_out(nil, [])
U1(L, V, R, I, inorder_out(L, LI)) → U2(L, V, R, I, LI, inorder_in(R, RI))
U2(L, V, R, I, LI, inorder_out(R, RI)) → U3(L, V, R, I, append_in(LI, .(V, RI), I))
append_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, append_in(Xs, Ys, Zs))
append_in([], X, X) → append_out([], X, X)
U4(X, Xs, Ys, Zs, append_out(Xs, Ys, Zs)) → append_out(.(X, Xs), Ys, .(X, Zs))
U3(L, V, R, I, append_out(LI, .(V, RI), I)) → inorder_out(tree(L, V, R), I)
INORDER_IN(tree(L, V, R), I) → U11(L, V, R, I, inorder_in(L, LI))
INORDER_IN(tree(L, V, R), I) → INORDER_IN(L, LI)
U11(L, V, R, I, inorder_out(L, LI)) → U21(L, V, R, I, LI, inorder_in(R, RI))
U11(L, V, R, I, inorder_out(L, LI)) → INORDER_IN(R, RI)
U21(L, V, R, I, LI, inorder_out(R, RI)) → U31(L, V, R, I, append_in(LI, .(V, RI), I))
U21(L, V, R, I, LI, inorder_out(R, RI)) → APPEND_IN(LI, .(V, RI), I)
APPEND_IN(.(X, Xs), Ys, .(X, Zs)) → U41(X, Xs, Ys, Zs, append_in(Xs, Ys, Zs))
APPEND_IN(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN(Xs, Ys, Zs)
inorder_in(tree(L, V, R), I) → U1(L, V, R, I, inorder_in(L, LI))
inorder_in(nil, []) → inorder_out(nil, [])
U1(L, V, R, I, inorder_out(L, LI)) → U2(L, V, R, I, LI, inorder_in(R, RI))
U2(L, V, R, I, LI, inorder_out(R, RI)) → U3(L, V, R, I, append_in(LI, .(V, RI), I))
append_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, append_in(Xs, Ys, Zs))
append_in([], X, X) → append_out([], X, X)
U4(X, Xs, Ys, Zs, append_out(Xs, Ys, Zs)) → append_out(.(X, Xs), Ys, .(X, Zs))
U3(L, V, R, I, append_out(LI, .(V, RI), I)) → inorder_out(tree(L, V, R), I)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
INORDER_IN(tree(L, V, R), I) → U11(L, V, R, I, inorder_in(L, LI))
INORDER_IN(tree(L, V, R), I) → INORDER_IN(L, LI)
U11(L, V, R, I, inorder_out(L, LI)) → U21(L, V, R, I, LI, inorder_in(R, RI))
U11(L, V, R, I, inorder_out(L, LI)) → INORDER_IN(R, RI)
U21(L, V, R, I, LI, inorder_out(R, RI)) → U31(L, V, R, I, append_in(LI, .(V, RI), I))
U21(L, V, R, I, LI, inorder_out(R, RI)) → APPEND_IN(LI, .(V, RI), I)
APPEND_IN(.(X, Xs), Ys, .(X, Zs)) → U41(X, Xs, Ys, Zs, append_in(Xs, Ys, Zs))
APPEND_IN(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN(Xs, Ys, Zs)
inorder_in(tree(L, V, R), I) → U1(L, V, R, I, inorder_in(L, LI))
inorder_in(nil, []) → inorder_out(nil, [])
U1(L, V, R, I, inorder_out(L, LI)) → U2(L, V, R, I, LI, inorder_in(R, RI))
U2(L, V, R, I, LI, inorder_out(R, RI)) → U3(L, V, R, I, append_in(LI, .(V, RI), I))
append_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, append_in(Xs, Ys, Zs))
append_in([], X, X) → append_out([], X, X)
U4(X, Xs, Ys, Zs, append_out(Xs, Ys, Zs)) → append_out(.(X, Xs), Ys, .(X, Zs))
U3(L, V, R, I, append_out(LI, .(V, RI), I)) → inorder_out(tree(L, V, R), I)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APPEND_IN(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN(Xs, Ys, Zs)
inorder_in(tree(L, V, R), I) → U1(L, V, R, I, inorder_in(L, LI))
inorder_in(nil, []) → inorder_out(nil, [])
U1(L, V, R, I, inorder_out(L, LI)) → U2(L, V, R, I, LI, inorder_in(R, RI))
U2(L, V, R, I, LI, inorder_out(R, RI)) → U3(L, V, R, I, append_in(LI, .(V, RI), I))
append_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, append_in(Xs, Ys, Zs))
append_in([], X, X) → append_out([], X, X)
U4(X, Xs, Ys, Zs, append_out(Xs, Ys, Zs)) → append_out(.(X, Xs), Ys, .(X, Zs))
U3(L, V, R, I, append_out(LI, .(V, RI), I)) → inorder_out(tree(L, V, R), I)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APPEND_IN(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APPEND_IN(.(X, Xs), Ys) → APPEND_IN(Xs, Ys)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
INORDER_IN(tree(L, V, R), I) → INORDER_IN(L, LI)
U11(L, V, R, I, inorder_out(L, LI)) → INORDER_IN(R, RI)
INORDER_IN(tree(L, V, R), I) → U11(L, V, R, I, inorder_in(L, LI))
inorder_in(tree(L, V, R), I) → U1(L, V, R, I, inorder_in(L, LI))
inorder_in(nil, []) → inorder_out(nil, [])
U1(L, V, R, I, inorder_out(L, LI)) → U2(L, V, R, I, LI, inorder_in(R, RI))
U2(L, V, R, I, LI, inorder_out(R, RI)) → U3(L, V, R, I, append_in(LI, .(V, RI), I))
append_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, append_in(Xs, Ys, Zs))
append_in([], X, X) → append_out([], X, X)
U4(X, Xs, Ys, Zs, append_out(Xs, Ys, Zs)) → append_out(.(X, Xs), Ys, .(X, Zs))
U3(L, V, R, I, append_out(LI, .(V, RI), I)) → inorder_out(tree(L, V, R), I)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
U11(V, R, inorder_out(LI)) → INORDER_IN(R)
INORDER_IN(tree(L, V, R)) → U11(V, R, inorder_in(L))
INORDER_IN(tree(L, V, R)) → INORDER_IN(L)
inorder_in(tree(L, V, R)) → U1(V, R, inorder_in(L))
inorder_in(nil) → inorder_out([])
U1(V, R, inorder_out(LI)) → U2(V, LI, inorder_in(R))
U2(V, LI, inorder_out(RI)) → U3(append_in(LI, .(V, RI)))
append_in(.(X, Xs), Ys) → U4(X, append_in(Xs, Ys))
append_in([], X) → append_out(X)
U4(X, append_out(Zs)) → append_out(.(X, Zs))
U3(append_out(I)) → inorder_out(I)
inorder_in(x0)
U1(x0, x1, x2)
U2(x0, x1, x2)
append_in(x0, x1)
U4(x0, x1)
U3(x0)
From the DPs we obtained the following set of size-change graphs: